package com.tzm.gaflow.web.util;


import com.tzm.gaflow.web.domain.*;
import lombok.experimental.UtilityClass;

import java.util.List;

/**
 * 同一返回处理工具类
 */

@UtilityClass
public class ResultUtils {

    public static <T> Result<T> ok() {
        return new Result<T>().ok();
    }

    public static <T> Result<T> ok(T t) {
        return new Result<T>().ok(t);
    }
    /**
     * 自定义返回错误--不包含堆栈信息--包含错误细节
     *
     * @param code
     * @param message
     * @param errorType
     * @param message
     * @param errorDetails
     * @param errorStack
     * @return
     */
    public static Result fail(int code, String message, ErrorType errorType, List<ErrorDetail> errorDetails, ErrorStack errorStack) {
        return new Result<String>().error(code, message, errorType, errorDetails, errorStack);
    }

    /**
     * 自定义返回错误--不包含堆栈信息--包含错误细节
     *
     * @param baseError
     * @param errorDetails
     * @return
     */
    public static Result fail(BaseError baseError, List<ErrorDetail> errorDetails, ErrorStack errorStack) {
        return new Result<String>().error(baseError.getCode(), baseError.getMessage(), baseError.getType(), errorDetails, errorStack);
    }

    /**
     * 自定义返回错误--不包含堆栈信息--包含错误细节
     *
     * @param baseError
     * @param errorDetails
     * @return
     */
    public static Result fail(BaseError baseError, List<ErrorDetail> errorDetails) {
        return new Result<String>().error(baseError.getCode(), baseError.getMessage(), baseError.getType(), errorDetails);
    }

    /**
     * 自定义返回错误--不包含堆栈信息--不包含错误细节
     *
     * @param baseError
     * @return
     */
    public static Result fail(BaseError baseError) {
        return new Result<String>().error(baseError.getCode(), baseError.getMessage(), baseError.getType());
    }
}
